<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>

    class EventBus {
      constructor(name, level) {
        this.name = name
        this.level = level
        this.collects = Object.create(null)
      }

      // 订阅
      on(key, fn) {
        if (!this.collects[key]) {
          this.collects[key] = []
        }
        this.collects[key].push(fn)
      }

      // 发布
      emit(key, msg) {
        if (this.collects[key]) {
          this.collects[key].forEach(fn => fn(msg))
        }
      }

      off(key) {
        if (key) {
          if (Array.isArray(this.collects[key])) {
            this.collects[key] = null
          }
        }
      }
    }


    const event = new EventBus('小明', '一级')

    event.on('phone', function (msg) {
      console.log('小明监听了phone信息：', msg)
    })
    event.on('phone', function (msg) {
      console.log('小明监听了phone信息：', msg)
    })
    event.on('phone', function (msg) {
      console.log('小明监听了phone信息：', msg)
    })
    event.on('phone', function (msg) {
      console.log('小明监听了phone信息：', msg)
    })
    event.on('phone', function (msg) {
      console.log('小明监听了phone信息：', msg)
    })

    event.emit('phone', '啥也不是啊')
  </script>
</body>

</html>